home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / Library / Funcs / Dispose.c < prev    next >
Encoding:
Text File  |  1997-10-02  |  4.0 KB  |  176 lines

  1. /*
  2. **        $PROJECT: ConfigFile.library
  3. **        $FILE: Dispose.c
  4. **        $DESCRIPTION: cf_Dispose#?() functions
  5. **
  6. **        (C) Copyright 1996-1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. IMPORT struct ExecBase    * SysBase;
  11.  
  12. /****** configfile.library/cf_DisposeArgument ********************************
  13. *
  14. *   NAME
  15. *        cf_DisposeArgument -- Remove and dispose an argument node.
  16. *
  17. *   SYNOPSIS
  18. *        cf_DisposeArgument(ArgNode);
  19. *                           A0
  20. *
  21. *        VOID cf_DisposeArgument(CFArgument *);
  22. *
  23. *   FUNCTION
  24. *        This function remove and dispose an argument node. The item list
  25. *        will also be cleared.
  26. *
  27. *   INPUTS
  28. *        ArgNode - The argument node to remove and dispose.
  29. *
  30. *   NOTES
  31. *        If the ArgNode already removed, the function dispose the
  32. *        argument node only.
  33. *
  34. *   SEE ALSO
  35. *        cf_DisposeGroup(), cf_DisposeItem()
  36. *
  37. ******************************************************************************
  38. *
  39. */
  40.  
  41. LibCall VOID cf_DisposeArgument ( REGA0 iCFArgument * ArgNode )
  42. {
  43.     APTR MemPool;
  44.  
  45.     FuncDe(bug("cf_DisposeArgument($%08lx)\n{\n", ArgNode));
  46.  
  47.     MemPool = ArgNode->GrpNode->Header->MemPool;
  48.  
  49.     if ( !( ArgNode->ExtFlags & CF_EFLG_REMOVED ) )
  50.         Remove ((struct Node *) ArgNode);
  51.  
  52.     DelArg (MemPool, ArgNode);
  53.  
  54.     ArgNode->GrpNode->Header->Flags |= CF_HFLG_CHANGED;
  55.     FuncDe(bug("}\n"));
  56. }
  57.  
  58. VOID DelArg ( APTR MemPool , iCFArgument *ArgNode )
  59. {
  60.     cf_ClearItemList (ArgNode);
  61.  
  62.     if ( ArgNode->ExtFlags & CF_EFLG_EXTERN_STRING )
  63.         DelStr (MemPool, ArgNode->Name);
  64.  
  65.     MyFreePooled (MemPool, ArgNode, ArgNode->StructSize);
  66. }
  67.  
  68. /****** configfile.library/cf_DisposeGroup ***********************************
  69. *
  70. *   NAME
  71. *        cf_DisposeGroup -- Remove and dispose a group node.
  72. *
  73. *   SYNOPSIS
  74. *        cf_DisposeGroup(GrpNode);
  75. *                        A0
  76. *
  77. *        VOID cf_DisposeGroup(CFGroup *);
  78. *
  79. *   FUNCTION
  80. *        This function remove and dispose a group node. All argument nodes
  81. *        will also be cleared.
  82. *
  83. *   INPUTS
  84. *        GrpNode - The group node to remove and dispose.
  85. *
  86. *   NOTES
  87. *        If the GrpNode already removed, the function dispose the
  88. *        group node only.
  89. *
  90. *   SEE ALSO
  91. *        cf_DisposeArgument(), cf_DisposeItem()
  92. *
  93. ******************************************************************************
  94. *
  95. */
  96.  
  97. LibCall VOID cf_DisposeGroup( REGA0 iCFGroup * GrpNode )
  98. {
  99.     APTR MemPool;
  100.  
  101.     FuncDe(bug("cf_DisposeGroup($%08lx)\n{\n", GrpNode));
  102.  
  103.     MemPool = GrpNode->Header->MemPool;
  104.  
  105.     if ( !( GrpNode->ExtFlags & CF_EFLG_REMOVED ) )
  106.         Remove ((struct Node *) GrpNode);
  107.  
  108.     DelGrp (MemPool, GrpNode);
  109.  
  110.     GrpNode->Header->Flags |= CF_HFLG_CHANGED;
  111.     FuncDe(bug("}\n"));
  112. }
  113.  
  114. VOID DelGrp ( APTR MemPool , iCFGroup * GrpNode )
  115. {
  116.     cf_ClearArgList (GrpNode);
  117.  
  118.     if ( GrpNode->ExtFlags & CF_EFLG_EXTERN_STRING )
  119.         DelStr (MemPool, GrpNode->Name);
  120.  
  121.     MyFreePooled (MemPool, GrpNode, GrpNode->StructSize);
  122. }
  123.  
  124. /****** configfile.library/cf_DisposeItem ************************************
  125. *
  126. *   NAME
  127. *        cf_DisposeItem -- Remove and dispose an item node.
  128. *
  129. *   SYNOPSIS
  130. *        cf_DisposeItem(ItemNode);
  131. *                       A0
  132. *
  133. *        VOID cf_DisposeItem(CFItem *);
  134. *
  135. *   FUNCTION
  136. *        This function remove and dispose an item node.
  137. *
  138. *   INPUTS
  139. *        ItemNode - The item node to remove and dispose.
  140. *
  141. *   NOTES
  142. *        If the ItemNode already removed, the function dispose the
  143. *        item node only.
  144. *
  145. *   SEE ALSO
  146. *        cf_DisposeGroup(), cf_DisposeArgument()
  147. *
  148. ******************************************************************************
  149. *
  150. */
  151.  
  152. LibCall VOID cf_DisposeItem ( REGA0 iCFItem * ItemNode )
  153. {
  154.     APTR MemPool;
  155.  
  156.     FuncDe(bug("cf_DisposeItem($%08lx)\n{\n", ItemNode));
  157.  
  158.     MemPool = ItemNode->ArgNode->GrpNode->Header->MemPool;
  159.  
  160.     if ( !( ItemNode->ExtFlags & CF_EFLG_REMOVED ) )
  161.         Remove ((struct Node *) ItemNode);
  162.  
  163.     DelItem (MemPool, ItemNode);
  164.  
  165.     ItemNode->ArgNode->GrpNode->Header->Flags |= CF_HFLG_CHANGED;
  166.     FuncDe(bug("}\n"));
  167. }
  168.  
  169. VOID DelItem ( APTR MemPool , iCFItem * ItemNode )
  170. {
  171.     if ( ItemNode->ExtFlags & CF_EFLG_EXTERN_STRING )
  172.         DelStr (MemPool, ItemNode->Contents.String);
  173.  
  174.     MyFreePooled (MemPool, ItemNode, ItemNode->StructSize);
  175. }
  176.